import ReportFormPeriodStatusMonitoring from '@main/entities/service/admin/reportForm/report-form-period-status-monitoring.entity';
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ReportFormPeriodStatusMonitoringController } from './periodStatusMonitoring/periodStatusMonitoring.controller';
import { ReportFormPeriodStatusMonitoringService } from './periodStatusMonitoring/periodStatusMonitoring.service';
import { SystemModule } from '../system/system.module';
import BaseMachine from '@main/entities/service/admin/base/base-machine.entity';
import BaseShift from '@main/entities/service/admin/base/base-shift.entity';
import { ReportFormMachineAlarmStatisticsController } from './machineAlarmStatistics/machineAlarmStatistics.controller';
import { ReportFormMachineAlarmStatisticsService } from './machineAlarmStatistics/machineAlarmStatistics.service';
import WipOrderReport from '@main/entities/service/admin/wip/wip-order-report.entity';
import ProductionOrder from '@main/entities/service/admin/production/production-order.entity';
import { ReportFormMachineOperationRecordController } from './machineOperationRecord/machineOperationRecord.controller';
import { ReportFormMachineOperationRecordService } from './machineOperationRecord/machineOperationRecord.service';
import { ReportFormMachineProductionStatisticsController } from './machineProductionStatistics/machineProductionStatistics.controller';
import { ReportFormMachineProductionStatisticsService } from './machineProductionStatistics/machineProductionStatistics.service';
import { ReportFormStaffReportStatisticsController } from './staffReportStatistics/staffReportStatistics.controller';
import { ReportFormStaffReportStatisticsService } from './staffReportStatistics/staffReportStatistics.service';
import { ReportFormShiftReportStatisticsController } from './shiftReportStatistics/shiftReportStatistics.controller';
import { ReportFormShiftReportStatisticsService } from './shiftReportStatistics/shiftReportStatistics.service';
import SysUser from '@main/entities/service/admin/sys/sys-user.entity';
import { ReportFormProductionStatisticsController } from './productionStatistics/productionStatistics.controller';
import { ReportFormProductionStatisticsService } from './productionStatistics/productionStatistics.service';
import { ReportFormOrderStatisticsController } from './orderStatistics/orderStatistics.controller';
import { ReportFormOrderStatisticsService } from './orderStatistics/orderStatistics.service';
import { ReportFormOrderCostAnalyseController } from './orderCostAnalyse/orderCostAnalyse.controller';
import { ReportFormOrderCostAnalyseService } from './orderCostAnalyse/orderCostAnalyse.service';
import { ReportFormDailyProductionQuotaController } from './dailyProductionQuota/dailyProductionQuota.controller';
import { ReportFormDailyProductionQuotaService } from './dailyProductionQuota/dailyProductionQuota.service';
import WipShutdownList from '@main/entities/service/admin/wip/wip-shutdown-list.entity';
import { ReportFormMonthlySummaryController } from './monthlySummary/monthlySummary.controller';
import { ReportFormMonthlySummaryService } from './monthlySummary/monthlySummary.service';
import WipBadRegistration from '@main/entities/service/admin/wip/wip-bad-registration.entity';
import WipBadRegistrationList from '@main/entities/service/admin/wip/wip-bad-registration-list.entity';

@Module({
  imports: [
    SystemModule,
    TypeOrmModule.forFeature([
      BaseMachine,
      BaseShift,
      ReportFormPeriodStatusMonitoring,
      WipOrderReport,
      ProductionOrder,
      SysUser,
      WipShutdownList,
      WipBadRegistration,
      WipBadRegistrationList,
    ]),
  ],
  controllers: [
    ReportFormPeriodStatusMonitoringController,
    ReportFormMachineAlarmStatisticsController,
    ReportFormMachineOperationRecordController,
    ReportFormMachineProductionStatisticsController,
    ReportFormStaffReportStatisticsController,
    ReportFormShiftReportStatisticsController,
    ReportFormProductionStatisticsController,
    ReportFormOrderStatisticsController,
    ReportFormOrderCostAnalyseController,
    ReportFormDailyProductionQuotaController,
    ReportFormMonthlySummaryController,
  ],
  providers: [
    ReportFormPeriodStatusMonitoringService,
    ReportFormMachineAlarmStatisticsService,
    ReportFormMachineOperationRecordService,
    ReportFormMachineProductionStatisticsService,
    ReportFormStaffReportStatisticsService,
    ReportFormShiftReportStatisticsService,
    ReportFormProductionStatisticsService,
    ReportFormOrderStatisticsService,
    ReportFormOrderCostAnalyseService,
    ReportFormDailyProductionQuotaService,
    ReportFormMonthlySummaryService,
  ],
  exports: [TypeOrmModule],
})
export class ReportFormModule {}
